package com.javasm.service.goods.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.javasm.common.page.PageResult;
import com.javasm.domin.criteria.goods.BaseTypeCriteria;
import com.javasm.domin.entity.goods.BaseBrand;
import com.javasm.domin.entity.goods.BaseType;
import com.javasm.mapper.goods.BaseTypeMapper;
import com.javasm.service.base.impl.BaseServiceimpl;
import com.javasm.service.goods.IBaseTypeService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;

import java.util.List;

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author whl
 * @since 2022-01-16
 */
@Service
@Transactional
@RequiredArgsConstructor
public class BaseTypeServiceImpl extends BaseServiceimpl<BaseType> implements IBaseTypeService {

    private final BaseTypeMapper baseTypeMapper;

    @Override
    public PageResult<BaseType> searchPage(BaseTypeCriteria baseTypeCriteria) {
        PageHelper.startPage(baseTypeCriteria.getCurrentPage(), baseTypeCriteria.getPageSize());
        LambdaQueryWrapper<BaseType> lambda = new QueryWrapper<BaseType>().lambda();

        if (!StringUtils.isEmpty(baseTypeCriteria.getTypeName())) {
            lambda.like(BaseType::getTypeName, baseTypeCriteria.getTypeName());
        }
        List<BaseType> baseTypes = baseTypeMapper.selectList(lambda);
        PageInfo<BaseType> pageInfo = new PageInfo<>(baseTypes);

        return new PageResult<BaseType>(pageInfo.getTotal(), baseTypes);
    }
}
